SYMBOLS {
    __STACKSIZE__:   type = weak,   value = $0800; # 2k stack
	__MUSIC_SIZE__:  type = weak,   value = 1495; 
	__LOGO_SIZE__:	 type = weak,	value = 134;
	#__LOGO_SIZE__:	 type = weak,	value = 0;
}
MEMORY {
    ZP:			start = $0002, size = $001A, define = yes;
	CPUSTACK:	start = $0100, size = $0100;

    RAM:		file = "",				define = yes,	start = $4000, size = $4000,			fill = no; 
	ROM1:		file = "sblox.bin",		define = yes,	start = $8000, size = $4000 - __MUSIC_SIZE__ - __LOGO_SIZE__,	fill = yes, fillval= $ff;
	MUSIC:		file = "sblox.bin",		define = yes,	start = $BFFF - __LOGO_SIZE__ - __MUSIC_SIZE__, size = __MUSIC_SIZE__, fill = yes, fillval=$ff;
	LOGO:		file = "sblox.bin",		define = yes,	start = $BFFF - __LOGO_SIZE__, size = __LOGO_SIZE__, fill = yes, fillval=$FF;
	SCREENBUF:  file = "",				define = yes,	start = $C000, size = $0800,			fill = no;
}
SEGMENTS {
    STARTUP:  load = ROM1,      type = ro;
    LOWCODE:  load = ROM1,      type = ro,                optional = yes;
    INIT:     load = ROM1,      type = ro,  define = yes, optional = yes;
    CODE:     load = ROM1,      type = ro, define = yes; 
    DATA:     load = ROM1,		run = RAM, type = rw, define = yes;
	ZPSAVE:   load = RAM,       type = bss;
    RODATA:   load = ROM1,      type = ro, define = yes;
    BSS:      load = RAM,		type = bss, define = yes;
	HEAP:	  load = RAM,		type = bss, optional = yes;
    ZEROPAGE: load = ZP,		type = zp,	define = yes;
	SCRBUF:   load = SCREENBUF, type = bss, define = yes;
	MUSIC:    load = MUSIC,		type = ro, define = yes;
	LOGO:	  load = LOGO,		type = ro, define = yes;
}
FEATURES {
    CONDES: segment = INIT,
	    type    = constructor,
	    label   = __CONSTRUCTOR_TABLE__,
	    count   = __CONSTRUCTOR_COUNT__;
    CONDES: segment = RODATA,
	    type    = destructor,
	    label   = __DESTRUCTOR_TABLE__,
	    count   = __DESTRUCTOR_COUNT__;
    CONDES: segment = RODATA,
	    type    = interruptor,
	    label   = __INTERRUPTOR_TABLE__,
	    count   = __INTERRUPTOR_COUNT__;
}
